home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / misc / amag / AM9410_2.lha / Haufenweise / Programme / AllocateTest.c < prev    next >
C/C++ Source or Header  |  1994-07-11  |  1KB  |  55 lines

  1. #include "AllocSupport.h"
  2. #include <clib/dos_protos.h>
  3.  
  4. #define BLOCKGROESSE  1000000
  5. #define BLOCKANZAHL   100000
  6.  
  7. __far APTR memblocks[BLOCKANZAHL];
  8.  
  9. int main(int argc, char *agrv[])
  10. {
  11.    struct MemHeader *mh = 0L;
  12.    register int i = 0,j;
  13.    register int p;
  14.  
  15.    Printf("Freier Speicher: %ld\n",AvailMem(MEMF_ANY));
  16.    if (mh = AllocMemHeader(BLOCKGROESSE,MEMF_FAST))
  17.    {
  18.       Printf("Freier Speicher: %ld\n",AvailMem(MEMF_ANY));
  19.       /* der Block ist alloziert */
  20.       i = 0;
  21.       while (i < BLOCKANZAHL)
  22.       {
  23.          if (i % 50 == 0) Printf("%5ld\r",i);
  24.          if (!(memblocks[i++] = AllocateVec(mh,16)))
  25.          {  break; }
  26.       }
  27.       // Printf("Frei ist: %ld\n", mh->mh_Free); Delay(50L);
  28.       Printf("%5ld\n",i);
  29.  
  30.       /* nur zu Testzwecken einzeln freigeben */
  31.       //j = i-2; i-= 2;
  32.       //while (i >= 0)
  33.       i = 0;
  34.       while (i < BLOCKANZAHL)
  35.       {
  36.          if (i % 50 == 0) Printf("%5ld\r",i);
  37.          //p = (i-- * 5437) % j;
  38.          if (memblocks[i] != 0)
  39.          {  DeallocateVec(mh,memblocks[i++]);
  40.             // memblocks[p] = 0;
  41.          }
  42.          else
  43.          {  break; }
  44.       }
  45.       Printf("%5ld\n",i);
  46.       // */
  47.  
  48.       FreeMemHeader(mh);
  49.    }
  50.    Printf("Freier Speicher: %ld\n",AvailMem(MEMF_ANY));
  51.  
  52.    return 0L;
  53. }
  54.  
  55.